package com.blog.common.domain.adapter;

import com.blog.common.domain.annotation.Convert;
import com.blog.common.domain.enums.ConvertEnums;

/**
 * <p>
 * 字段转换策略接口
 * </p>
 *
 * @author Valerie
 * @date 2023/5/28
 **/
public interface ConvertAdapter {

    /**
     * 使用何种适配器
     *
     * @param convert 注解
     * @return {@link boolean}
     */
    boolean getConvertAdapter(Convert convert);

    /**
     * 处理方法
     *
     * @param field 输入字段
     * @param convert 注解
     * @return void
     */
    String convertField(Convert convert, String field);


    ThreadLocal<Boolean> threadLocal = new ThreadLocal<>();

    /**
     * 清空缓存
     *
     * @return void
     */
    static void clear(){
        threadLocal.remove();
    }

    /**
     * 调用这个方法则不进行字段转换
     *
     * @return void
     */
    static void skipConvert(){
        threadLocal.set(true);
    }

}
